package com.wyw.leetcode.learning.simple;

/**
 * leetcode topic 977
 * 有序数组的平方
 *
 * @Author Mr Wu （yewen.wu.china@gmail.com）
 * @Date 2021/11/4 11:14
 */
public class Topic977 {
    public static void main(String[] args) {
        int[] nums = {-1,0,3,5,9,12};
        int[] ints = sortedSquares(nums);
        System.out.println(ints);
    }

    public static int[] sortedSquares(int[] nums) {
        int right = nums.length - 1;
        int left = 0;
        int[] result = new int[nums.length];
        int index = result.length - 1;
        while (left <= right) {
            if (nums[left] * nums[left] > nums[right] * nums[right]) {
                result[index--] = nums[left] * nums[left];
                ++left;
            } else {
                result[index--] = nums[right] * nums[right];
                --right;
            }
        }
        return result;

    }
//    public static int[] sortedSquares(int[] nums) {
//        int negativeNumber = -1;//负数索引位置
//        int positiveNumber = -1;//正数索引位置，包含0
//        int[] result = new int[nums.length];
//        if(nums[0] < 0 && nums[nums.length-1] > 0) {
//            for (int i = 0; i< nums.length; i ++){
//                if (nums[i] >= 0) {
//                    negativeNumber = i - 1;
//                    positiveNumber = i;
//                    break;
//                }
//            }
//        }
//
//        if(negativeNumber >= 0 && positiveNumber >= 0) {
//            for (int i =0; i< nums.length;i++){
//                if(negativeNumber < 0) {
//                    result[i] = nums[positiveNumber] * nums[positiveNumber];
//                    positiveNumber++;
//                } else if(positiveNumber >= nums.length) {
//                    result[i] = nums[negativeNumber] * nums[negativeNumber];
//                    negativeNumber--;
//                } else {
//                    if (0-nums[negativeNumber] > nums[positiveNumber]) {
//                        result[i] = nums[positiveNumber] * nums[positiveNumber];
//                        positiveNumber++;
//                    } else {
//                        result[i] = nums[negativeNumber] * nums[negativeNumber];
//                        negativeNumber--;
//                    }
//                }
//            }
//        } else {
//            if(nums[0]< 0) {
//                for(int i=0;i<nums.length;i++) {
//                    result[i] = (nums[nums.length-1-i] * nums[nums.length-1-i]);
//                }
//            } else {
//                for(int i=0;i<nums.length;i++) {
//                    result[i] = (nums[i] * nums[i]);
//                }
//            }
//
//        }
//        return result;
//
//    }


}
